20793
18415
Swift kodlamasında sadece acemiyim. Benim fikrim oldukça basit ve iki düğmeli bir uygulama. Tıklandığında, bir metin alanı metnini değiştirecektir.
Main.StoryBoard'da bir metin alanı ve iki düğme ekliyorum.
ViewController.swift dosyasında. Ben şöyle yazıyorum:
UIKit'i içe aktar
class ViewController: UIViewController {
@IBOutlet zayıf var textfield: UITextField!
@IBOutlet zayıf var düğmesi: UIButton!
@IBOutlet zayıf var button2: UIButton!
@IBAction func action1 (_ gönderen: UIButton) {
textfield.text = "az önce button1'e tıkladınız"
}
@IBAction func action2 (_ gönderen: UIButton) {
textfield.text = "az önce button2'yi tıkladınız"
}
}
İyi olması gerekiyordu. Ancak şunu gösteren bir hata belirir:
thread1: sinyal SIGABRT
AppDelegate.swift dosyasında satır:
sınıf AppDelegate: UIResponder, UIApplicationDelegate
Kodumun nesi var? 
Sorunu çözmek için önce projeyi temizleyin ve ardından yeniden oluşturun.
Projeyi temizlemek için MenuBar'a gidin: Ürün -> Temizle
Ardından projeyi yeniden oluşturmak için her zamanki gibi Çalıştır düğmesine tıklayın.
|
Bağlantısı kesilen bir priziniz olduğunda bir SIGABRT hatası alırsınız. Film şeridindeki görünüm denetleyicinize tıklayın ve yan paneldeki bağlantılara gidin (ok sembolü). Orada fazladan bir priziniz, bir kopyası veya bağlı olmayan fazladan bir priziniz olup olmadığına bakın. Öyle değilse, belki de çıkışlarınızı kodunuza doğru şekilde bağlamamışsınızdır.
SIGABRT'nin orada olmayan bir prizi (düğme, görünüm, metin alanı vb.) Aramaya çalıştığınızda gerçekleştiğini unutmayın.
|
Benim için bir çıkış değildi. Hataya gidip söylediklerini okuyarak sorunu çözdüm. (Ayrıca Noob ..)
Bu bir hataydı:
Ve çözüm buradaydı:
Sadece çıktıda yukarı kaydırın ve hata ortaya çıkacaktır.
|
Bu tür bir hatanın yaygın bir nedeni, IBOutlet'inizin veya IBAction'ınızın adını değiştirmiş olmanızdır, bunu kaynak koduna giderek kolayca kontrol edebilirsiniz.
Main.storyboard'a tıklayın ve ardından aç'ı seçin
ve ardından kaynak kodunu seçin
kaynak kodu açılacak
ve sonra değiştirdiğiniz iboutlet veya ibaction adının olup olmadığını kontrol edin, eğer varsa, parçayı seçin ve silin ve ardından tekrar iboutlet veya ibaction oluşturun.
Bu, sorununuzu çözmelidir
|
Benim durumumda, sadece AppDelegate'teki kilitlenme sırasında hata almıyordum ve bir sonraki seçeneğin işaretini kaldırmak zorunda kaldım: OS_ACTIVITY_MODE, sonra .xib dosyamda gerçek çökme nedenini bulabildim
Umarım bu da size yardımcı olabilir :)
|
Ben de aynı sorunu yaşadım. Film şeridinde bir düğme yaptım ve bunu ViewController'a bağladım ve daha sonra düğmeyi sildim. Yani bağlantı hala oradaydı, ancak düğme yoktu ve bu yüzden sizinle aynı hatayı aldım.
Düzeltmek:
Bağlantı denetçisine gidin (film şeridinizde sağ üst köşedeki ok) ve kullanılmayan bağlantıları silin.
|
Bununla Xcode 10'da karşılaşırsanız, derlemeden önce temizlemeniz gerekecektir. Veya eski yapı sistemine geçiş yapın. Dosya -> Çalışma Alanı Ayarları ... -> Sistem Oluştur: Eski Yapı Sistemi.
|
Benim durumumda hiçbir kayıt yoktu.
Benim hatam, zaten gezinme yığınının parçası olan bir gezinme yığınına bir görünüm denetleyicisini itmekti.
|
Bazen, işlevin yalnızca ana iş parçacığında yürütülmesi gerektiğinde de olur, böylece ana iş parçacığına aşağıdaki gibi atayarak düzeltebilirsiniz: -
DispatchQueue.main.async {
kodunuz burada
}
|
Benim için bu hata, yapılan segment için geçerli olmayan bir segment hazırlama adımımın olmasıydı.
uzun Hikaye:
override func ready (segment için: UIStoryboardSegue, gönderen: Herhangi biri?) {
gosetup = segue.destination as! Güncelleme
gosetup.wherefrom = updatestring
}
Bu, yalnızca bir kişi için yapıldığında tüm kesimlere yapılıyordu. Bu yüzden bir boole yarattım ve gosetup'ı içine yerleştirdim.
|
Bu çok yaygın bir hatadır ve birçok nedenden dolayı olabilir. En yaygın olanı, film şeridindeki bir görünüm denetleyicisine bağlı bir IBOUTLET / IBACTION'ın hızlı dosyadan silinmesi, ancak film şeridinden silinmesidir. Durum böyle değilse, hatanın ne olduğunu bulmak ve teşhis etmek için alttaki araç çubuğundaki günlüğü kullanın. Hatayı bulmanıza yardımcı olması için kesme noktalarını ve hata ayıklamayı kullanabilirsiniz.
Hatayı nasıl düzelteceğinizi öğrenmek için lütfen Google'da bulduğum şu makaleyi kullanın: https://rayaans.com/fixing-the-notorious-sigabrt-error-in-xcode
|
Benim durumumda, arama yapmak için RxSwift kullanıyordum.
OnNext yöntemi içinde belirli bir sınıfın paylaşılan bir örneğini kapsamlı bir şekilde kullanmaya devam ettim, bu da onu muhtemelen erişilemez hale getirdi (Mutex).
Bu tür durumların yalnızca kesinlikle gerekli olduğunda dikkatli bir şekilde ele alındığından emin olun.
Benim durumumda, paylaşılan örneğin yöntemlerinin dönüş değerlerini güvenli bir şekilde (ve sırayla) saklamak için önceden birkaç değişkeni kullandım ve bunları onNext bloğunda yeniden kullandım.
|
Ben de aynı sorunu yaşadım. Benim durumumda sadece dosyanın üzerine yazdım
GoogleService-Info.plist
o yolda:
Platform \ ios \ YOUR_APP_NAME \ Kaynaklar \ Kaynaklar
Benim durumumda dosyalar veri olmadan mevcuttu.
|
Oldukça aktif soru. Bu soruyu cevaplamak için 10 itibar kazanın. İtibar koşulu, bu sorunun istenmeyen postalardan ve yanıtlanmayan etkinliklerden korunmasına yardımcı olur.
Aradığın cevap değil mi? İos swift etiketli diğer sorulara göz atın veya kendi sorunuzu sorun.